home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xsw / disp_info.c < prev    next >
C/C++ Source or Header  |  1995-05-09  |  12KB  |  398 lines

  1. /***************************************************************************
  2.  *
  3.  *    Copyright (c) 1990-1993        The Santa Cruz Operation, Inc.
  4.  *
  5.  *    All rights reserved.  No part of this program or publication may be
  6.  *    reproduced, transmitted, transcribed, stored in a retrieval system,
  7.  *    or translated into any language or computer language, in any form or
  8.  *    by any means, electronic, mechanical, magnetic, optical, chemical,
  9.  *    biological, or otherwise, without the prior written permission of:
  10.  *
  11.  *        The Santa Cruz Operation , Inc.        (408) 425-7222
  12.  *        400 Encinal St., Santa Cruz, California 95060 USA
  13.  *
  14.  **************************************************************************/
  15. /*
  16.  *    
  17.  *    SCCS Stuff
  18.  *
  19.  *    @(#) disp_info.c 12.1 95/05/09 SCOINC
  20.  *    
  21.  * S003, 25-May-93, rickra
  22.  *     Made the default to draw to the Pixmap.......
  23.  *
  24.  * S002, 01-Jan-93, rickra
  25.  *     Added support for seperate windows.
  26.  *
  27.  * S001, 30-Sep-92, rickra
  28.  *    Really Change hard coded color referneces to user configurable.
  29.  *
  30.  * S000, 30-Sep-92, rickra
  31.  *     Added copyright and modification history
  32.  *    Change hard coded color referneces to user configurable.
  33.  *
  34.  */
  35. /*+-------------------------------------------------------------------------
  36.     disp_info.c - XSW display several types of fixed width fields
  37.     wht@n4hgf.Mt-Park.GA.US
  38.  
  39.   Defined functions:
  40.     disp_info_int(x,y,label,fmt,value)
  41.     disp_info_long(x,y,label,fmt,value)
  42.     disp_static_int(x,y,label,fmt,value)
  43.     disp_static_long(x,y,label,fmt,value)
  44.  
  45. --------------------------------------------------------------------------*/
  46. /*+:EDITS:*/
  47. /*:09-25-1990-05:11-wht@n4hgf-release heh-heh x0.22 preliminary */
  48. /*:09-20-1990-00:09-wht@n4hgf-scales, sysinfo/minfo, bootinfo working */
  49. /*:09-15-1990-14:47-wht-creation */
  50.  
  51. #include <X11/Xlib.h>
  52. #include <X11/Xutil.h>
  53. #include <X11/Intrinsic.h>
  54. #include <X11/Shell.h>
  55. #include <Xm/Xm.h>
  56. #include <Xm/MainW.h>
  57. #include <Xm/DrawingA.h>
  58.  
  59. #include "include/unixincs.h"
  60. #include "include/buttons.h"
  61. #include "include/xsw.h"
  62.  
  63. extern int      in_expose_callback;
  64. extern int      in_set_display_mode;
  65.  
  66.  
  67.  
  68.  
  69. /*+-------------------------------------------------------------------------
  70.     disp_info_long(window,display,gc,DrawAreaXYWH,x,y,label,fmt,value)
  71. --------------------------------------------------------------------------*/
  72. void
  73. disp_info_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, label, fmt, value)
  74.      Window          window;
  75.      Display        *display;
  76.      GC              gc;
  77.      XWindowAttributes DrawAreaXYWH;
  78.      Pixmap          pixmap;
  79.      register int    x, y;
  80.      char           *label;
  81.      char           *fmt;
  82.      long            value;
  83. {
  84.   register int    fwidth = FWIDTH;
  85.   int             len = strlen (label);
  86.   char            s32[32];
  87. /*
  88.   if (redrawing_entire_DrawArea)
  89.     {
  90. */
  91.   XSetForeground (display, gc, colorLabel.pixel);
  92. /*
  93.       XDrawString (display, window, gc, x, y + FASCENT, label, len);
  94. */
  95.   XDrawString (display, pixmap, gc, x, y + FASCENT, label, len);
  96. /*
  97.     }
  98. */
  99.   x += (len * fwidth);
  100.   sprintf (s32, fmt, value);
  101.   len = strlen (s32);
  102. /*
  103.   XClearArea (display, window, x, y, fwidth * len, FHEIGHT, 0);
  104. */
  105.   XSetForeground (display, gc, background);
  106.   XFillRectangle (display, pixmap, gc, x, y, fwidth * len, FHEIGHT);
  107.  
  108.   XSetForeground (display, gc, colorNumeric.pixel);
  109. /*
  110.   XDrawString (display, window, gc, x, y + FASCENT, s32, len);
  111. */
  112.   XDrawString (display, pixmap, gc, x, y + FASCENT, s32, len);
  113.  
  114. }                /* end of disp_info_long */
  115.  
  116. /*+-------------------------------------------------------------------------
  117.     disp_info_int(window,display,gc,DrawAreaXYWH,x,y,label,fmt,value)
  118. --------------------------------------------------------------------------*/
  119. void
  120. disp_info_int (window, display, gc, DrawAreaXYWH, x, y, pixmap, label, fmt, value)
  121.      Window          window;
  122.      Display        *display;
  123.      GC              gc;
  124.      XWindowAttributes DrawAreaXYWH;
  125.      register int    x, y;
  126.      Pixmap          pixmap;
  127.      char           *label;
  128.      char           *fmt;
  129.      int             value;
  130. {
  131.   register int    fwidth = FWIDTH;
  132.   int             len = strlen (label);
  133.   char            s32[32];
  134. /*
  135.   if (redrawing_entire_DrawArea)
  136.     {
  137. */
  138.   XSetForeground (display, gc, colorLabel.pixel);
  139. /*
  140.       XDrawString (display, window, gc, x, y + FASCENT, label, len);
  141. */
  142.   XDrawString (display, pixmap, gc, x, y + FASCENT, label, len);
  143. /*
  144.     }
  145. */
  146.   x += (len * fwidth);
  147.   sprintf (s32, fmt, value);
  148.   len = strlen (s32);
  149. /*
  150.   XClearArea (display, window, x, y, fwidth * len, FHEIGHT, 0);
  151.   XSetForeground (display, gc, colorNumeric.pixel);
  152.   XDrawString (display, window, gc, x, y + FASCENT, s32, len);
  153. */
  154.   XSetForeground (display, gc, background);
  155.   XFillRectangle (display, pixmap, gc, x, y, fwidth * len, FHEIGHT);
  156.  
  157.   XSetForeground (display, gc, colorNumeric.pixel);
  158.   XDrawString (display, pixmap, gc, x, y + FASCENT, s32, len);
  159.  
  160. }                /* end of disp_info_int */
  161.  
  162. /*+-------------------------------------------------------------------------
  163.     disp_static_long(window,display,gc,DrawAreaXYWH,x,y,label,fmt,value)
  164. --------------------------------------------------------------------------*/
  165. void
  166. disp_static_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, label, fmt, value)
  167.      Window          window;
  168.      Display        *display;
  169.      GC              gc;
  170.      XWindowAttributes DrawAreaXYWH;
  171.      Pixmap          pixmap;
  172.      register int    x, y;
  173.      char           *label;
  174.      char           *fmt;
  175.      long            value;
  176. {
  177.   register int    fwidth;
  178.   int             len;
  179.   char            s32[32];
  180. /*
  181.   if (redrawing_entire_DrawArea)
  182.     {
  183. */
  184.   fwidth = FWIDTH;
  185.   len = strlen (label);
  186.   XSetForeground (display, gc, colorLabel.pixel);
  187. /*
  188.       XDrawString (display, window, gc, x, y + FASCENT, label, len);
  189. */
  190.   XDrawString (display, pixmap, gc, x, y + FASCENT, label, len);
  191.   x += (len * fwidth);
  192.   sprintf (s32, fmt, value);
  193. /*
  194.       XDrawString (display, window, gc, x, y + FASCENT, s32, strlen (s32));
  195. */
  196.   XDrawString (display, pixmap, gc, x, y + FASCENT, s32, strlen (s32));
  197. /*
  198.     }
  199. */
  200.  
  201. }                /* end of disp_static_long */
  202.  
  203. /*+-------------------------------------------------------------------------
  204.     disp_static_int(window,display,gc,DrawAreaXYWH,x,y,label,fmt,value)
  205. --------------------------------------------------------------------------*/
  206. void
  207. disp_static_int (window, display, gc, DrawAreaXYWH, pixmap, x, y, label, fmt, value)
  208.      Window          window;
  209.      Display        *display;
  210.      GC              gc;
  211.      XWindowAttributes DrawAreaXYWH;
  212.      Pixmap          pixmap;
  213.      register int    x, y;
  214.      char           *label;
  215.      char           *fmt;
  216.      int             value;
  217. {
  218.   register int    fwidth;
  219.   int             len;
  220.   char            s32[32];
  221.  
  222. /*
  223.   if (redrawing_entire_DrawArea)
  224.     {
  225. */
  226.   fwidth = FWIDTH;
  227.   len = strlen (label);
  228.   XSetForeground (display, gc, colorLabel.pixel);
  229. /*
  230.       XDrawString (display, window, gc, x, y + FASCENT, label, len);
  231. */
  232.   XDrawString (display, pixmap, gc, x, y + FASCENT, label, len);
  233.   x += (len * fwidth);
  234.   sprintf (s32, fmt, value);
  235. /*
  236.       XDrawString (display, window, gc, x, y + FASCENT, s32, strlen (s32));
  237. */
  238.   XDrawString (display, pixmap, gc, x, y + FASCENT, s32, strlen (s32));
  239. /*
  240.     }
  241. */
  242. }                /* end of disp_static_int */
  243.  
  244. /*+-------------------------------------------------------------------------
  245.     disp_info_text(window,display,gc,DrawAreaXYWH,x,y,pixel,textstr)
  246.  
  247. returns length of string
  248. --------------------------------------------------------------------------*/
  249. disp_info_text (window, display, gc, DrawAreaXYWH, x, y, pixmap, pixel, textstr)
  250.      Window          window;
  251.      Display        *display;
  252.      GC              gc;
  253.      XWindowAttributes DrawAreaXYWH;
  254.      int             x;
  255.      int             y;
  256.      Pixmap          pixmap;
  257.      unsigned long   pixel;
  258.      char           *textstr;
  259. {
  260.   register        len = strlen (textstr);
  261.  
  262. /*
  263.  * Draw onto the window...
  264.  */
  265.  
  266. /*
  267.   XClearArea (display, window, x, y, FWIDTH * len, FHEIGHT, 0);
  268.   XSetForeground (display, gc, pixel);
  269.   XDrawString (display, window, gc, x, y + FASCENT, textstr, len);
  270. */
  271.  
  272. /*
  273.  * Update the pixmap also...
  274.  */
  275.  
  276.   XSetForeground (display, gc, background);
  277.   XFillRectangle (display, pixmap, gc, x, y, FWIDTH * len, FHEIGHT);
  278.   XSetForeground (display, gc, pixel);
  279.   XDrawString (display, pixmap, gc, x, y + FASCENT, textstr, len);
  280.   return (len * FWIDTH);
  281. }                /* end of disp_info_text */
  282.  
  283. /*+-------------------------------------------------------------------------
  284.     disp_text(window,display,gc,DrawAreaXYWH,x,y,pixel,textstr)
  285.  
  286. returns length of string
  287. --------------------------------------------------------------------------*/
  288. disp_text (window, display, gc, DrawAreaXYWH, pixmap, x, y, pixel, textstr)
  289.      Window          window;
  290.      Display        *display;
  291.      GC              gc;
  292.      XWindowAttributes DrawAreaXYWH;
  293.      Pixmap          pixmap;
  294.      int             x;
  295.      int             y;
  296.      unsigned long   pixel;
  297.      char           *textstr;
  298. {
  299.   register        len = strlen (textstr);
  300.  
  301. /*
  302.   if ((in_expose_callback) || (current_server -> font_change) ||
  303.       (in_set_display_mode))
  304.     {
  305.       XClearArea (display, window, x, y, FWIDTH * len, FHEIGHT, 0);
  306.       XSetForeground (display, gc, pixel);
  307.       XDrawString (display, window, gc, x, y + FASCENT, textstr, len);
  308. */
  309.   XSetForeground (display, gc, background);
  310.   XFillRectangle (display, pixmap, gc, x, y, FWIDTH * len, FHEIGHT);
  311.  
  312.   XSetForeground (display, gc, pixel);
  313.   XDrawString (display, pixmap, gc, x, y + FASCENT, textstr, len);
  314.  
  315.   return (len * FWIDTH);
  316. /*
  317.     }
  318. */
  319. }                /* end of disp_info_text */
  320.  
  321. /*+-------------------------------------------------------------------------
  322.     disp_long(window,display,gc,DrawAreaXYWH,x,y,pixel,value)
  323.  
  324. returns length of string
  325. --------------------------------------------------------------------------*/
  326. void
  327. disp_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, fmt, pixel, value)
  328.      Window          window;
  329.      Display        *display;
  330.      GC              gc;
  331.      XWindowAttributes DrawAreaXYWH;
  332.      Pixmap          pixmap;
  333.  
  334.      int             x;
  335.      int             y;
  336.      char           *fmt;
  337.      unsigned long   pixel;
  338.      long            value;
  339. {
  340.   int             len;
  341.   char            s32[32];
  342.  
  343.   sprintf (s32, fmt, value);
  344.   len = strlen (s32);
  345. /*
  346.   XClearArea (display, window, x, y, FWIDTH * len, FHEIGHT, 0);
  347.   XSetForeground (display, gc, pixel);
  348.   XDrawString (display, window, gc, x, y + FASCENT, s32, len);
  349. */
  350.   XSetForeground (display, gc, background);
  351.   XFillRectangle (display, pixmap, gc, x, y, FWIDTH * len, FHEIGHT);
  352.   XSetForeground (display, gc, pixel);
  353.   XDrawString (display, pixmap, gc, x, y + FASCENT, s32, len);
  354.  
  355.  
  356. }                /* end of disp_info_text */
  357.  
  358. /*+-------------------------------------------------------------------------
  359.         disp_float(window,display,gc,DrawAreaXYWH,x,y,pixel,value)
  360.  
  361. returns length of string
  362. --------------------------------------------------------------------------*/
  363. void
  364. disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, fmt, pixel, value)
  365.      Window          window;
  366.      Display        *display;
  367.      GC              gc;
  368.      XWindowAttributes DrawAreaXYWH;
  369.      Pixmap          pixmap;
  370.      int             x;
  371.      int             y;
  372.      char           *fmt;
  373.      unsigned long   pixel;
  374.      float           value;
  375. {
  376.   int             len;
  377.   char            s32[32];
  378.  
  379.   sprintf (s32, fmt, value);
  380.   len = strlen (s32);
  381. /*
  382.   XClearArea (display, window, x, y, FWIDTH * len, FHEIGHT, 0);
  383. */
  384.   XSetForeground (display, gc, background);
  385.   XFillRectangle (display, pixmap, gc, x, y, FWIDTH * len, FHEIGHT);
  386.  
  387.   XSetForeground (display, gc, pixel);
  388. /*
  389.   XDrawString (display, window, gc, x, y + FASCENT, s32, len);
  390. */
  391.   XDrawString (display, pixmap, gc, x, y + FASCENT, s32, len);
  392.  
  393. }                /* end of disp_float */
  394.  
  395.  
  396. /* vi: set tabstop=4 shiftwidth=4: */
  397. /* end of disp_info.c */
  398.